#ifndef _TASKQUEUE_H
#define _TASKQUEUE_H

#include "head.h"

typedef struct tasknode
{
    int peerfd;
    void *(*funcname)(struct tasknode *);
    void *argument;
    struct tasknode * next;
}task_t;

typedef struct{
    task_t * head;
    task_t * rear;
    int size;
    int exitflag;
    pthread_mutex_t mutex;
    pthread_cond_t cond;
}taskqueue_t;

//任务队列方法
taskqueue_t * tq_init();                    //有堆内存，与tq_destory成对使用
void tq_destory(taskqueue_t * queue);
int tq_getsize(taskqueue_t * queue);
void tq_enqueue(taskqueue_t * queue,task_t * task);
void tq_dequeue(taskqueue_t * queue,task_t * task);
void tq_setexit(taskqueue_t * queue);

#endif